---
sidebar_position: 6
---

# Задание №5

Варианты заданий:

1. Ниже представлен пример класса `Point`. Напишите программу для хранения объектов типа `Point` в векторе (подсказка: не забудьте для класса `Point` определить операторы `<`, `<<` и `==`):

   ```cpp
   class Point {
   public:
     double x, у;
     Point() { x = у = 0; }
    Point(double a, double b) { x = а; у = b; }
   };
   ```

   Создать массив точек с помощью контейнера vector в `main()` и сразу занести в него информацию о 6 точках: `(1.2, 6.3)`, `(4.0, 0.7)`, `(7.2, 0.8)`, `(5.3, 3.0)`, `(4.9, 6.6)`, `(9.3, 0.2)`. Вывести массив на экран таким образом, чтобы координаты каждой точки выводились в отдельной строке. Выведите на экран координаты точки, которая наиболее удалена от центра координат. Сдвиньте все точки влево по оси абцисс на расстояние, которое введет пользователь и снова выведите массив на экран. Напишите функцию вывода массива на экран.

2. Создать класс с именем `Planet` для хранения следующей информации:

   ```bash
   название (string), количество спутников. 
   ```

   Создать массив планет с помощью контейнера vector в `main()`.

   Занести в вектор информацию о 9 планетах. Данные о планетах:

   ```bash
   "Меркурий", 0 
   "Венера", 0
   "Земля", 1
   "Марс", 2
   "Юпитер", 69
   "Сатурн", 62
   "Уран", 27
   "Нептун", 14
   "Плутон", 10
   ```

   Вывести массив планет на экран, используя функцию.

   В цикле определите элемент, у которого максимальное количество спутников.

3. Создать класс:

   ```cpp
   class Card {
     string title;   // заглавие книги
     string author;  // автор
     int number;     // количество имеющихся экземпляров
   public:
     Card() : title(""), author(""), number(0) {}
     Card(string t, string a, int n) : title(t), author(a), number(0) {}
   };
   ```

   В программе создать вектор из объектов класса `Card` (5 элементов).

   Распечатать вектор. Пользователь вводит автора, программа выводит книги автора или сообщение об их отсутствии.

4. Составить описание класса `Complex` для представления комплексных чисел с возможностью задания вещественной и мнимой частей числами типа double. В программе создать вектор из объектов класса `Complex` (6 элементов): `(-1.2, 6.3)`, `(4.0, 0.7)`, `(7.2, -0.8)`, `(5.3, 3.0)`, `(-4.9, 6.6)`, `(-9.3, 0.2)`.

   Распечатать вектор в виде:

   ```bash
   -1.2 + i * 6.3
   4.1 + i * 0.7
   7.2 - i * 0.8
   5.3 + i * 3
   -4.9 + i * 6.6
   -9.3 + i * 0.2
   ```

   Сложите все числа (у комплексных чисел отдельно складываются действительные и мнимые части) и результирующее число выведите на экран.

5. Ниже представлен пример класса `Rectangle` (прямоугольник). Напишите программу для хранения объектов типа `Rectangle` в векторе (подсказка: не забудьте для класса `Rectangle` определить операторы `<` и `==`):

   ```cpp
   class Rectangle {
     double a;  // ширина
     double b;  // длина
    public:
     Rectangle() : a(0), b(0) {}
     Rectangle(double a, double bi) : a(a), b(b) {}
   };
   ```

   Создать массив объектов типа `Rectangle` с помощью контейнера vector в `main()` и сразу занести в него информацию о 6 объектах: `(1.2, 6.3)`, `(4.0, 0.7)`, `(7.2, 0.8)`, `(5.3, 3.0)`, `(4.9, 6.6)`, `(9.3, 0.2)`. Вывести массив на экран таким образом, чтобы размеры каждого прямоугольника выводились в отдельной строке. Выведите на экран размеры прямоугольника, у которого наибольшая площадь. Напишите функцию вывода массива на экран.

6. Создайте класс с именем `Date`, содержащий три закрытых поля типа `int`, предназначенные для хранения дня, месяца и года. (Подсказка: не забудьте для класса `Date` определить операторы `<` и `==`). Один из конструкторов класса должен инициализировать поля датой `01.01.1970`, а другой конструктор — заданным набором значений. Создайте метод класса, который будет выводить значения полей на экран в формате `11.05.2019`.
Создать массив объектов типа `Date` с помощью контейнера vector в `main()` и сразу занести в него информацию о шести датах: `(1, 2, 1963)`, `(14, 7, 1995)`, `(7, 12, 2088)`, `(5, 3, 2030)`, `(24, 9, 2013)`, `(19, 9, 2020)`. Вывести массив на экран таким образом, чтобы каждая дата выводились в отдельной строке. Создайте новый вектор, в который запишите даты первого вектора, которые относятся к будущему. Выведите на экран второй вектор. Напишите функцию вывода массива на экран.

7. Создайте класс с именем `Time`, содержащий три закрытых поля типа `int`, предназначенные для хранения часов, минут и секунд (подсказка: не забудьте для класса `Time` определить операторы `<` и `==`). Один из конструкторов класса должен инициализировать поля нулевыми значениями, а другой конструктор — заданным набором значений.

   Создайте метод класса, который будет выводить значения полей на экран в формате `11:59:59`.

   Создать массив объектов типа Time с помощью контейнера `vector` в `main()` и сразу занести в него информацию о шести датах: `(1, 2, 63)`, `(14, 57, 19)`, `(7, 32, 20)`, `(5, 13, 23)`, `(10, 19, 45)`, `(19, 9, 59)`. Вывести массив на экран таким образом, чтобы каждая дата выводились в отдельной строке. Создайте новый вектор, в который запишите даты первого вектора, которые относятся к ночи (с `0` до `5` часов). Выведите на экран второй вектор. Напишите функцию вывода массива на экран.

8. Создать класс `Inventory` для учета товаров на складе. Класс содержит следующие закрытые компоненты: `string item` – наименование товара, `double cost` – стоимость, `int on_hand` – количество (подсказка: не забудьте для класса `Inventory` определить операторы `<` и `==`). Один из конструкторов класса должен инициализировать поля нулевыми значениями, а другой конструктор — заданным набором значений.

   Создать массив объектов типа `Inventory` с помощью контейнера vector в `main()` и сразу занести в него информацию о шести объектах: `("Отверка", 99, 0)`, `("Молоток", 430, 10)`, `("Гайки", 70, 100)`, `("Профиль", 540, 0)`, `("Уголок", 230, 9)`, `("Доска", 350, 17)`. Вывести массив на экран таким образом, чтобы каждый товар выводился в отдельной строке:

    ```bash
    Отверка - 99 - 0
    Молоток - 430 - 10
    Гайки - 70 - 100
    Профиль - 540 - 0
    Уголок - 230 - 9
    Доска - 350 - 17
    ```

    Создайте новый вектор, в который объекты первого вектора, у которых количество равно нулю. Выведите на экран второй вектор. Напишите функцию вывода массива на экран.

9. Ниже представлен пример класса `Box` (коробка). Напишите программу для хранения объектов типа `Box` в векторе (подсказка: не забудьте для класса Box определить операторы `<` и `==`)

   ```cpp
   class Box {
     double a;  // ширина
     double b;  // высота
     double c;  // длина
    public:
     Box() : a(0), b(0), c(0) {}
     Box(double a, double b, double c) : a(a), b(b), c(c) {}
   };
   ```

   Создать массив объектов типа `Box` с помощью контейнера `vector` в `main()` и сразу занести в него информацию о 6 объектах: `(1, 2, 63)`, `(14, 57, 19)`, `(7, 32, 20)`, `(5, 13, 23)`, `(10, 19, 45)`, `(19, 9, 59)`. Вывести массив на экран таким образом, чтобы размеры каждой коробки выводились в отдельной строке. Выведите на экран размеры коробки, у которой наибольший объем. Напишите функцию вывода массива на экран.

10. Ниже представлен пример класса `Graduate` (выпускник). Напишите программу для хранения объектов типа `Graduate` в векторе (подсказка: не забудьте для класса `Graduate` определить операторы `<` и `==`):

    ```cpp
    class Graduate {
      string name;    // фамилия
      double rating;  // рейтинг
     public:
     Graduate() {
        name = "";
        rating = 0;
      }
      Graduate(string Name, double Rating) {
        name = Name;
        rating = Rating;
      }
    };
    ```

    Создать массив объектов с помощью контейнера `vector` в `main()` и сразу занести в него информацию о 6 объектах: `("Иванов", 99)`, `("Петров", 430)`, `("Семенов", 70)`, `("Котов", 540)`, `("Белых", 230)`, `("Черных", 350)`. Вывести массив на экран таким образом, чтобы характеристики каждого объекта выводились в отдельной строке. Выведите на экран характеристики объекта, который имеет максимальный рейтинг. Увеличьте рейтинг каждого выпускника на число, которое введет пользователь и снова выведите массив на экран. Напишите функцию вывода массива на экран.
